package demo.security.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * SecurityExampleApplication
 *
 * @author lidj
 * @date 2018-01-08
 */
@SpringBootApplication
@RestController
@ComponentScan({"demo.security.browser","demo.security.core","demo.security.example"})
public class SecurityExampleApplication {
    public static void main(String[] args){
        SpringApplication.run(SecurityExampleApplication.class);
    }

    @RequestMapping("/hello")
    public String hello(){
        return "Hello Spring Security";
    }
}
/**
 * 这个地方的ComponentScan 看起来就很蛋疼
 * 但是如果要扫描到其他模块的包以及相关类
 * 必须指定该扫描的包
 *
 * 但是又不能只扫描原包，还得把本应用的base-package指定
 *
 * 这个要补充spring-boot包扫描机制：
 * 他只会扫描到application类包名之下的类
 * 这也就是为什么如果模块A中虽然加了@Component之类的注解但是模块B中扫描不到的原因
 *
 * 目前我就想到两种办法：1.像这样指定扫描的包
 *                     2.模块A中的包名在模块B包名范围内
 *                     如模块B base-package 为 demo.pg.b
 *                     则模块A中的注解的类属于demo.pg.b.*包下
 *                     而其他包下的不会被扫描
 *
 *
 */